#pragma once
#include <iostream>
#include <vector>
#include <ctime>

typedef void (*task_t)(); // 指向“无参数且返回void的函数”函数指针类型

////////////////////////Debug////////////////////////
void PrintLog()
{
    std::cout << "我是一个打印日志的任务" << std::endl; 
}
void DownLoad()
{
    std::cout << "我是一个下载的任务" << std::endl; 
}
void Upload()
{
    std::cout << "我是一个上传的任务" << std::endl; 
}
////////////////////////Debug////////////////////////

// 管理任务的类
class TaskManager
{
private:
   std::vector<task_t> _tasks; // 存放各类任务, 但必须是task_t类型的
public:
    TaskManager()
    {
        srand(time(nullptr)); // 初始化伪随机数生成器种子, 让程序每次运行时生成不同的随机数序列
    }

    void Register(task_t t)
    {
        _tasks.push_back(t);
    }
    // 返回一个任务
    int Code()
    {
        return rand() % _tasks.size(); // 随机选取一个任务列表里面的任务
    }
    // 执行一个任务
    void Execute(int code)
    {
        if(code >= 0 && code < _tasks.size())
        {
            _tasks[code](); // 执行
        }
    }
    ~TaskManager()
    {}
}; 